package mapred.groupmaxmin;

import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Partitioner;

// 泛型中的2个类型是Mapper的输出的K-V的类型
// 必须将此类应用于job的设置：job.setPartitionerClass(GMMPartitioner.class);
public class GMMPartitioner extends Partitioner<Text, Text> {

    // 此函数的2个参数的值，来自Mapper的输出
    // 所以：针对Mapper的输出的每一对K-V，getPartition()都会执行一次
    // 当前函数的返回值，决定了当前Mapper的这个K-V应该由哪个Reducer来出来
    // numPartitions这个参数的值来自：job.setNumReduceTasks(6)
    @Override
    public int getPartition(Text key, Text value, int numPartitions) {

        switch (key.toString()) {
            case "差":
                return 0;
            case "一般":
                return 1;
            case "好":
                return 2;
            case "很好":
                return 3;
            case "非常好":
                return 4;
            case "无":
                return 5;
            default:
                return 5;
        }
    }
}
